import Foundation


// MARK: - 值类型的数据竞争问题
///
struct Counter {
    var value: Int
    mutating func increment() {
        value += 1
    }
}

public func zDemo_dataRace() {
    var counter = Counter(value: 0)

    let queue = DispatchQueue(label: "com.example.concurrentQueue", attributes: .concurrent)

    let group = DispatchGroup()

    // 启动多个线程同时修改 Counter 的值
    for _ in 1...1000 {
        queue.async(group: group) {
            counter.increment() // 修改同一个值类型的属性，可能发生数据竞争
        }
    }

    group.wait() // 等待所有任务完成
    
    print("Final value: \(counter.value)")
}


